SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO
CREATE PROCEDURE [dbo].[paChequearContinuidadesDeServiciosBK15102008]
-- <DESCRIPCION> Realiza el chequeo de continuidad de un servicio.
-- <CONSIDERACIONES ESPECIALES> 
-- <TABLAS> tb_ServiciosAgentes, tb_SubServiciosAgentes, tb_ColaDeMovimientos, tb_PlazasDeMovimiento

@idCola INT,
@Estado INT OUTPUT,
@Diagnostico VARCHAR(1000) OUTPUT
AS
SET NOCOUNT ON
DECLARE @IdPlaza INT
DECLARE @IdAgente INT
DECLARE @Mes INT
DECLARE @Anio INT
DECLARE @FechaAlta DATETIME
DECLARE @Modo INT

SET @Estado = 0
SET @Diagnostico = ''

SELECT @Modo = Modo FROM tb_Usuarios WHERE NTUser = SYSTEM_USER

SELECT @IdAgente = Agente, @IdPlaza = IdPlaza, @Mes = MONTH(Fecha1), @Anio = YEAR(Fecha1) 
FROM tb_ColaDeMovimientos C 
INNER JOIN tb_PlazasDeMovimiento P ON C.IdCola = P.IdCola AND C.IdCola = @IdCola

SELECT @FechaAlta = MAX(S.FechaAlta) 
FROM tb_ServiciosAgentes S 
INNER JOIN tb_SubServiciosAgentes SS ON SS.ServicioAgente = S.IdServicioAgente
WHERE Agente = @IdAgente AND Plaza = @IdPlaza 

-- 1. Chequea que no exista para el mes y el año una continuidad para el agente y la plaza.
IF EXISTS(SELECT top 1  C.IdCola FROM tb_ColaDeMovimientos C INNER JOIN tb_PlazasDeMovimiento P ON C.IdCola = P.IdCola
	WHERE Agente = @IdAgente AND IdPlaza = @IdPlaza 
	AND Movimiento = 10 AND MONTH(Fecha1) = @Mes 
	AND YEAR(Fecha1) = @Anio AND C.IdCola <> @IdCola)
	SELECT @Estado = 99, @Diagnostico = 'El Movimiento de Continuidad que se desea pasar ya fue informado anteriormente'

-- 2. Chequea que la continuidad no sea sobre el mismo mes y ano que el alta del servicio
IF MONTH(@FechaAlta) = @Mes AND YEAR(@FechaAlta) = @Anio
	SELECT @Estado = 99, @Diagnostico = 'El Movimiento de Continuidad no puede corresponder al mismo mes y año que el Alta de Servicio'


UPDATE tb_ColaDeMovimientos SET Estado = @Estado, EstadoCheck = @Estado, ChequeoEscuela = CASE WHEN @Modo = 2 THEN @Diagnostico ELSE ChequeoEscuela END 
WHERE idCola = @idCola
GO
